package public

import (
	"context"
	"git.900sui.cn/kc/rpcinterface/interface/common"
)

const (
	//==推送指定用户格式==============
	//{
	//	"type": 1,
	// 	"condition":{
	//		"userIds":[1,2,3]
	// 	}
	//}
	//==推送全部用户格式==============
	//{
	//	"type": 2
	//	"condition":{}
	//}
	//其他类型待后续根据业务定制
	//推送用户的搜索条件 1=推送指定用户 2=推送全部用户
	PUSH_CONDITION_ASSIGN_USER int = 1
	PUSH_CONDITION_ALL_USER    int = 2

	//消息推送状态 0=待推送 1=推送中 2=已完成推送
	PUSH_MSG_STATUS_WAIT = 0
	PUSH_MSG_STATUS_ing  = 1
	PUSH_MSG_STATUS_suc  = 2
	PUSH_MSG_STATUS_fail = 3
)

//推送用户的搜索条件 见上方注释
type PushCondition struct {
	Type      int                    `json:"type"`
	Condition map[string]interface{} `json:"condition"`
}

type ArgsPushMsgTask struct {
	BusId         int                    //商家id 0=平台消息
	Channel       int                    //接收消息的app类型
	AlertMsg      string                 //弹出消息内容
	MessageCon    string                 //内部穿透消息内容
	Extras        map[string]interface{} //扩展数据
	PushCondition                        // 推送用户的搜索条件 见上方注释
}

type ArgsBindJpushRegid struct {
	common.Utoken
	RegId   string //用户app在极光平台获取到的注册id
	Channel int    //app类型
	Device  int    //设备类型
}

type Jpush interface {
	//用户绑定极光id
	BindJpushRegid(ctx context.Context, args *ArgsBindJpushRegid, reply *bool) error
	//解绑
	UnbindJpushRegid(ctx context.Context, args *ArgsBindJpushRegid, reply *bool) error
	//添加推送消息任务
	PushMsgTask(ctx context.Context, args *ArgsPushMsgTask, pushMsgId *int) error
	//执行推送消息任务
	RunPushMsg(ctx context.Context, pushMsgId *int, reply *bool) error
}
